package com.zenithmind.mall.service;

import com.zenithmind.mall.pojo.dto.OrderDTO;

/**
 * 订单创建服务接口 - 遵循接口隔离原则，专门负责订单创建相关操作
 * 
 * @author ZenithMind Team
 * @since 2025-07-03
 */
public interface OrderCreationService {

    /**
     * 创建订单
     * 
     * @param orderDTO 订单信息
     * @param userId 用户ID
     * @return 订单ID
     */
    String createOrder(OrderDTO orderDTO, String userId);

    /**
     * 预创建订单（验证但不保存）
     * 
     * @param orderDTO 订单信息
     * @param userId 用户ID
     * @return 预创建结果
     */
    Boolean preCreateOrder(OrderDTO orderDTO, String userId);

    /**
     * 验证订单数据
     * 
     * @param orderDTO 订单信息
     * @param userId 用户ID
     * @return 验证结果
     */
    Boolean validateOrderData(OrderDTO orderDTO, String userId);

    /**
     * 计算订单金额
     * 
     * @param orderDTO 订单信息
     * @param userId 用户ID
     * @return 订单金额信息
     */
    Object calculateOrderAmount(OrderDTO orderDTO, String userId);

    /**
     * 锁定库存
     * 
     * @param orderId 订单ID
     * @return 是否成功
     */
    Boolean lockStock(String orderId);

    /**
     * 释放库存
     * 
     * @param orderId 订单ID
     * @return 是否成功
     */
    Boolean releaseStock(String orderId);
}
